package collection;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * List集
 * java.util.List接口,其继承自Collection.
 * List集合的特点是可以存放个重复元素并且有序,提供了一套通过下标操作元素的
 * 方法.
 * 常用实现类:
 * java.util.ArrayList:使用数组实现,查询性能更好.
 * java.util.LinkedList:使用链表实现,增删性能更好,首尾增删元素性能最佳.
 */
public class ListDemo1 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
//        List<String> list = new LinkedList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);


        /*
            E get(int index)
            获取当前集合中指定下标处对应的元素
         */
        String str = list.get(2);//String str = array[2];
        System.out.println(str);

        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }


        /*
            E set(int index,E e)
            将给定元素设置到指定位置,返回值为该位置原来的元素
         */
        System.out.println(list);
        String old = list.set(2,"six");
        System.out.println(list);
        System.out.println(old);


        //[five, two, three, four, one]
        //将集合元素翻转
        for(int i=0;i<list.size()/2;i++){//i=1
            //获取正数位置的元素
            String e = list.get(i);//one
            //将正数位置元素存入倒数位置,并获取原倒数位置元素
            e = list.set(list.size()-1-i,e);//five
            //将原倒数位置元素设置到正数位置上
            list.set(i,e);
        }

        System.out.println(list);

        Collections.reverse(list);

        System.out.println(list);

        Collections.shuffle(list);

        System.out.println(list);


    }
}
